# 最简单的闭包:

# 外部函数
def outer():
    # 内部函数
    def inner():
        print("不认输,没人希望你赢!")

    return inner  # 将内部函数返回


# outer() 执行完后将inner函数返回了
fn = outer()  # fn===>inner函数  函数调用的本质就是变量名+()


# fn()


# 内部函数引用外部的变量
def outer1(b):
    a = 10

    def inner1():
        print(a + b)

    return inner1


fn1 = outer1(22)
fn1()
fn1()
fn1()

'''
1.当闭包执行结束后,仍然能够保存住当前的运行环境
2.闭包可以根据外部作用域局部变量得到不同的效果.类似于配置的功能.
闭包的应用场景:
    装饰器
'''
